package components

import (
	"encoding/json"

	"github.com/astaxie/beego/config"
	"github.com/astaxie/beego/logs"
)

var confReader config.Configer = nil
var TcpPort int

// 消息队列的相关配置
var MaxMsgQueueSize int
var MaxMsgQueueNum int
var MaxMsgSize int //约束发来的报文最大长度----就是最大16K
// 输出队列的相关配置
var OutputNum int
var OutputSize int

// 踢人协程的周期事件，超时时间
var TickKickTime int
var OverTime int

func init() {
	var e error
	confReader, e = config.NewConfig("ini", "confFile/serverConf.conf")
	if e != nil {
		return
		//panic("配置文件打开失败，检查相关路径")
	}
	TickKickTime = 360
	OverTime = 180

	//读取日志相关参数
	logConf := make(map[string]interface{})
	logConf["filename"] = confReader.String("log::log_path")
	logConf["level"], _ = confReader.Int("log::log_level")
	logConf["maxlines"], _ = confReader.Int("maxlines")

	confStr, err := json.Marshal(logConf)
	if err != nil {
		panic("marshal conf error")
	}
	logs.SetLogger(logs.AdapterFile, string(confStr))
	//logs.SetLogFuncCall(true) //日志会包含调用时的文件名，行号--要增加日志深度才会打印出具体的文件名与行号，不如打印信息时自己弄

}

func InitTcpConfig() {
	//配置相关参数
	var e error
	TcpPort, e = confReader.Int("server::port")
	if e != nil {
		panic("配置读取端口失败")
	}
	MaxMsgQueueSize, e = confReader.Int("server::max_msg_queue_len")
	if e != nil {
		panic("配置读取消息队列个数失败")
	}

	MaxMsgSize, e = confReader.Int("server::max_msg_len")
	if e != nil {
		panic("配置读取消息长度最大值参数失败")
	}
	MaxMsgQueueNum, e = confReader.Int("server::max_msg_queue_num")
	if e != nil {
		panic("配置读取消息队列个数失败")
	}
	OutputNum, e = confReader.Int("server::output_queue_num")
	if e != nil {
		panic("配置读取输出队列个数失败")
	}
	OutputSize, e = confReader.Int("server::output_queue_len")
	if e != nil {
		panic("配置读取输出队列大小失败")
	}

}
